"""
日期工具模块
"""

import datetime
import calendar

from app.common import SQL_DATETIME_FORMAT


def get_month_first_day_and_last_day(year=None, month=None):
    """
    获取一个月的第一天和最后一天
    :param year: 年份，默认是本年，可传int或str类型
    :param month: 月份，默认是本月，可传int或str类型
    :return: firstDay: 当月的第一天，datetime.date类型
              lastDay: 当月的最后一天，datetime.date类型
    """

    if year:
        year = int(year)
    else:
        year = datetime.date.today().year

    if month:
        month = int(month)
    else:
        month = datetime.date.today().month

    # 获取当月第一天的星期和当月的总天数
    first_day_week_day, month_range = calendar.monthrange(year, month)

    # 获取当月的第一天
    first_day = datetime.date(year=year, month=month, day=1)
    last_day = datetime.date(year=year, month=month, day=month_range)

    return first_day, last_day


def get_current_time_str():
    """
    获取当前时间（格式为：%Y-%m-%d %H:%M:%S）
    :return:
    """
    return datetime.datetime.now().strftime(SQL_DATETIME_FORMAT)
